

/*************************************************************************************
 *
 *	模块名称 : Linux函数概要信息列表模块
 *	文件名称 : funbrieflist.c
 *	版   本 : V1.0
 *	说   明 : 相当于词典条目源文件, 保存函数概要信息结构体数组.
             每当完成一个函数的概要信息时, 只需要完成对应的函数概要信息结构, 并放到结构体数组.
             需要不断的添加新条目, 优化已有条目, 以方便词典信息更全面准确,
 *	修改记录 :
 *		     版本号       日期         作者        说明
 *	         V0.1     2022-05-20      YT      发布初始版本, 仅包含两个词典条目作为示例
 *
 *	Copyright (C), 2022-2030, xxxx
 *
 *************************************************************************************/


/**********************************************************************************
如何在函数词典中添加条目

    词典条目是需要不断维护和添加的, 希望能有更多的人加入维护.   
    需要增加已有函数信息时, 需要三个步骤:

    1. 添加函数概要信息结构体数组元素  

        在 funbrieflist.c 文件中的结构体数组 FunBriefTypedef g_FunBriefList[] 中添加相应的数组元素添加相应的数组元素, 
        每个数组元素对应一个函数词典条目.

    2.  添加函数的概要信息文件 

        在 ./brieffile/ 目录中添加相应的 函数概要信息文件, 
        用文件名字符串初始化结构体中的 char  strBriefFile[MAX_FUN_BRF_SIZE] . 
        在用户查询时, 这个文件内容会打印在屏幕上.   

        通常这个文件包含这两部分内容:  
            1. 函数的"原子操作"例程代码
                即必不可少的操作, 比如对于 fopen 函数, 有如下原子操作:  
                    a) 需包含的头文件 <stdio.h>  
                    b) fopen和fclose必须成对出现  
                    c) 程序需要检查fopen和fclose的返回值是否为错误信息
            2. 函数的知识要点概要 
                建议在这个文件中写明与这个函数相关的知识要点概要(通常放在文件最后的注释部分)  

    3. 重新编译  

        makefile已经做好, 在源文件所在目录下执行 make 命令即可.  
        如果提示已经存在 myman 可执行文件, 执行 make clean 命令清除, 然后再 make

*********************************************************************************/

#include "inc.h"
#include "funbrief.h"
#include "funbrieflist.h"

/*
typedef struct 
{
    char  strFunName[MAX_FUN_NAME_SIZE];             // 函数名称字符串
    int   iManIndex;                                 // 函数所在的 Linux Manual Character Number
    char  strFunPrototype[MAX_FUN_PROTOTYPE_SIZE];   // 函数原型字符串
    char  strFunBrief[MAX_FUN_PROTOTYPE_SIZE];       // 函数概要字符串
    char *pstrHeadList[MAX_HAED_LIST_NUM];           // 函数相关的头文件名称指针列表, NULL表示列表尾
    char *pstrDemoList[MAX_DEMO_LIST_NUM];           // 函数相关的示例文件名称指针列表, NULL表示列表尾
    char  strBriefFile[MAX_FUN_BRF_SIZE];            // 函数概要文本文件名
}FunBriefTypedef;  //函数概要信息结构体, 词典条目信息


*/

const FunBriefTypedef g_FunBriefList[] = 
{
   
    { // ---开始---函数概要结构体数据

        // 函数名称
        "fopen",   

        // 函数所在Linux Manul手册篇章
        3,

        // 函数原型                                  
        "FILE *fopen( const char *restrict pathname, const char *restrict mode);",

        // 函数概要
        "根据文件名建立所要求模式(读,写,创建等)的文件流",

        // 函数所涉及系统头文件列表, 以NULL结尾
        {                                               
            "<stdio.h>",
            NULL
        },

        // 函数所涉及例程文件列表, 以NULL结尾
        {                                             
            "../Linux_02_IO_01_stdio/01_fopen.c",
            "../Linux_02_IO_02_fifeop/06_fileno.c",
            NULL
        },

        // 函数概要说明文本文件名称, 如果暂时没有, 输入 {0}
        "../Linux_02_IO_01_stdio/01_fopen.c",   
           
    }, // ---结束---函数概要结构体数据
    
    { // ---开始---函数概要结构体数据

        // 函数名称
        "fclose",   

        // 函数所在Linux Manul手册篇章
        3,

        // 函数原型                                  
        "int fclose( FILE *stream );",

       // 函数概要
        "关闭文件流",

        // 函数所涉及系统头文件列表, 以NULL结尾
        {                                               
            "<stdio.h>",
            NULL
        },

        // 函数所涉及例程文件列表, 以NULL结尾
        {                                             
            "../Linux_02_IO_01_stdio/01_fopen.c",
            "../Linux_02_IO_02_fifeop/06_fileno.c",
            NULL
        },

        // 函数概要说明文本文件名称, 如果暂时没有, 输入 {0}
        "../Linux_02_IO_01_stdio/01_fopen.c",   
           
    }, // ---结束---函数概要结构体数据

    { // ---开始---函数概要结构体数据

        // 函数名称
        "fgetc",   

        // 函数所在Linux Manul手册篇章
        3,

        // 函数原型                                  
        "int fgetc( FILE *stream );",

       // 函数概要
        "reads the next character from stream and returns it as an unsigned char cast to an int, or EOF on end of file or error",

        // 函数所涉及系统头文件列表, 以NULL结尾
        {                                               
            "<stdio.h>",
            NULL
        },

        // 函数所涉及例程文件列表, 以NULL结尾
        {                                             
            "../Linux_02_IO_01_stdio/02_fgetc.c",
            "../Linux_02_IO_02_fifeop/04_cp.c",
            NULL
        },

        // 函数概要说明文本文件名称, 如果暂时没有, 输入 {0}
        "../Linux_02_IO_01_stdio/02_fgetc.c",   
           
    }, // ---结束---函数概要结构体数据

};

const int g_FunBriefListNum = sizeof(g_FunBriefList)/sizeof(g_FunBriefList[0]);

